/*
 * Created by Federico Pisarello - SisDev Software (c) 2013 - fpisarello@sisdevsoft.com
 */

var popFinalizarForm = 'ordenFabricacionFinalizarPop.php';
var popForm = 'ordenFabricacionPop.php';
var popImprimir = 'docsPdf/pdfOrdenFabricacion.php';
var actionForm = 'ordenFabricacionAction.php';

var joDataOrdenFabricacion;
var oTable;
var oTableItem;
var oTablePiezasOrdenFabricacion;
var popUpLoaded = false;

var jaItems;
var jaSubitems;

/** Variable of tracking the IndexPK **/
var actionPK = undefined;
var estado = undefined;
var action = undefined;

function $_init()
{	
	var gaiSelected;
	
	$(document).ready(function() {
    	oTable = $('#dt_ordenFabricacion').dataTable( {
					"bJQueryUI": true,
					"sPaginationType": "two_button",
					"bInfo": false,
					"bLengthChange": false,
					"bProcessing": true,
					"bAutoWidth": false,
					"bServerSide": true,
					"sAjaxSource": actionForm + "?accion=search",
					"fnRowCallback": function( nRow, aData, iDisplayIndex ) {
						if ( jQuery.inArray(aData[0], gaiSelected) != -1 )
						{
					        $(nRow).addClass('row_selected');
						}
						return nRow;
					},
					"aaSorting": [[ 0, "desc" ]],
					"aoColumns": [
					            null,
					  			null,
					  			null,
					  			null
					  		]
				});
    	
    	$('#dt_ordenFabricacion tbody td img').live( 'click', function () {
    		var nTr = $(this).parents('tr')[0];
    		if (oTable.fnIsOpen(nTr) )
    		{
    			/* This row is already open - close it */
    			this.src = "images/details_open.png";
    			oTable.fnClose( nTr );
    		}
    		else
    		{            
    			/* Open this row */            
    			this.src = "images/details_close.png";            
    			oTable.fnOpen( nTr, fnFormatDetailsOrdenFabricacion(oTable, nTr), 'details' );        
    		}    
    	});
    	
    	/* Click event handler */
    	$('#dt_ordenFabricacion tbody tr').live('click', function () {
    		var aData = oTable.fnGetData(this);
    		if(aData == null)
    			return;
    		var iId = aData[0];
    		actionPK = aData[0];
    		estado = aData[2];
    		
    		gaiSelected =  [];
    		if ( $(this).hasClass('row_selected') ) {
	            $(this).removeClass('row_selected');
	            actionPK = undefined;
	        }
	        else {
	            oTable.$('tr.row_selected').removeClass('row_selected');
	            $(this).addClass('row_selected');
	            gaiSelected[gaiSelected.length++] = iId;
	        }
    	} );

	});
	
	$("#ordenFabricacionDialog").dialog({
		autoOpen:false, 
		height:'auto', 
		width:840, 
		modal: true,
		closeOnEscape: false,
		position : ['center',10],
		dialogClass:'no-close',
		beforeClose: function() { $_ClearOrdenFabricacionPopForm(); },
		open: function() {
			$('#ordenFabricacionDialog').css('background-color','#4f4233');
		}
	});
	
	$("#finalizarOrdenFabricacionDialog").dialog({
		autoOpen:false, 
		height:'auto', 
		width:840, 
		modal: true,
		closeOnEscape: false,
		position : ['center',10],
		dialogClass:'no-close',
		beforeClose: function() { $_ClearOrdenFabricacionFinalizarPopForm(); },
		open: function() {
			$('#finalizarOrdenFabricacionDialog').css('background-color','#4f4233');
		}
	});
	
	//Add Click for All Buttons in Search Form
	$("#btnAgregar").click( function(e) {
		addProxyShow();
    });
		
	$('#btnEliminar').click( function(e) {
		delProxyShow();
	});
	
	$('#btnImprimir').click( function(e) {
		imprimirProxyShow();
	});
	
	$('#btnProcesar').click( function(e) {
		procesarProxyShow();
	});
	
	$('#btnFinalizar').click( function(e) {
		finalizarProxyShow();
	});
}

function imprimirProxyShow()
{	
	if(actionPK === undefined)
	{
		$_showMessage('ALERT', 'ALERTA', 'Seleccione una Orden de Fabricaci&oacute;n de la Grilla');
		return;
	}
	
	var paramData = "idOrdenFabricacion=" + actionPK;
	window.open(popImprimir + '?' + paramData, '_blank');	
}

function fnFormatDetailsOrdenFabricacion(oTableOrdenFabricacion, nTr){
	var aData = oTableOrdenFabricacion.fnGetData(nTr);
	var sOut = "";
	var paramData =  "accion=searchOrdenFabricacionDetalle&idOrdenFabricacion=" + aData[0];
	
    $.ajax({
        type: 'POST',
        url: actionForm,
        data: paramData,
        async: false,
		dataType: 'html',
        success: function(strHtml)
                            {
        						sOut = '<table cellpadding="5" cellspacing="0" border="0" style="padding-left:50px;">';
        						sOut += strHtml;
        						sOut += '</table>';
                            }
    });
		
	return sOut;
}

function $_initPop()
{
	$("#fecha").attr('disabled','disabled')
	
	//Add Click for All Buttons in Pop Form
	$('#btnCerrar').click( function(e) {
		$('#ordenFabricacionDialog').dialog('close');
	});
	$('#btnGuardar').click( function(e) {
		$('#ordenFabricacionPopForm').submit();
	});
	
	jaItems = [];
	jaSubitems = [];
		
	oTableItem = $('#dt_ordenFabricacionItems').dataTable( {	
					"bJQueryUI": true,
					"bInfo": false,
					"bLengthChange": false,
					"bProcessing": true,
					"bScrollInfinite": true,
					"bScrollCollapse": false,
					"sScrollY": "300px",
					"bPaginate": false,
					"iDisplayLength": -1,
					"bServerSide": true,
					"bSearchable":false,
					"bAutoWidth": false,
					"sAjaxSource": actionForm + "?accion=cargarPedidosPendientes&idOrdenFabricacion=" + actionPK,
					"aaSorting": [[ 5, "desc" ]],
					"aoColumns": [
					              	{"sWidth": "7%", "bSortable": false},
					              	{"bSortable": false },
					              	{"bSortable": false },
					              	{"bSortable": false },
					              	{"bSortable": false },
					              	null,
					              	{"bSortable": false }
								]
				});
	
	if(!popUpLoaded) {
		$('#dt_ordenFabricacionItems tbody td img').live('click', function () {
			var nTr = $(this).parents('tr')[0];
			if (oTableItem.fnIsOpen(nTr) )
			{
				/* This row is already open - close it */
				this.src = "images/details_open.png";
				oTableItem.fnClose( nTr );
			}
			else
			{            
				/* Open this row */            
				this.src = "images/details_close.png";            
				oTableItem.fnOpen( nTr, fnFormatDetailsOrdenFabricacionItem(oTableItem, nTr), 'details' );        
			}    
		});
		
		popUpLoaded = true;
	}
		
	var d = new Date();
	var month = d.getMonth()+1;
	var day = d.getDate();
	
	//Populo la Fecha y Hora
	$("#fecha").val(((''+day).length<2 ? '0' : '') + day + '/' + ((''+month).length<2 ? '0' : '') + month + '/' + d.getFullYear());
	
	$_ValidatorSetDefaults();
	$_initPopValidator();
	
	$('#cmbTipo').change(function() {
		oTableItem.fnReloadAjax(actionForm + "?accion=cargarPedidosPendientes&idOrdenFabricacion=" + actionPK + "&tipo=" + $(this).val());
		jaItems = [];
		jaSubitems = [];
	});
}

function fnFormatDetailsOrdenFabricacionItem(oTableItems, nTr)
{
	var aData = oTableItems.fnGetData(nTr);
	var sOut = "";
	var paramData = "accion=searchOrdenFabricacionItemsDetalle&codProducto=" + aData[1] + "&variedad=" + aData[3] + "&jaSubitems=" + JSON.stringify(jaSubitems);
	
	if($('#cmbTipo').val() != "") {
		paramData += "&tipo=" + $('#cmbTipo').val();
	}
	
    $.ajax({
        type: 'POST',
        url: actionForm,
        data: paramData,
        async: false,
		dataType: 'html',
        success: function(strHtml)
                            {
        						sOut = '<table cellpadding="5" cellspacing="0" border="0" style="padding-left:30px;">';
        						sOut += strHtml;
        						sOut += '</table>';
                            }
    });
		
	return sOut;
}

function addProxyShow()
{
	//Reset State of action and IndexPK
	actionPK = undefined;
	action = iConst.NEW;
	estado = undefined;
	oTable.$('tr.row_selected').removeClass('row_selected');
	$('#ordenFabricacionDialog').load(popForm).dialog('open');
}

function $_saveOrdenFabricacion(action)
{	
	$("#btnGuardar").attr('disabled','disabled');
	
	var paramData = 'accion=addOrdenFabricacion&' + $("#ordenFabricacionPopForm").serialize() + '&jaItems=' + encodeURIComponent(JSON.stringify(jaItems)) + '&jaSubitems=' + encodeURIComponent(JSON.stringify(jaSubitems));
	
    $.ajax({
        type: 'POST',
        url: actionForm,
        data: paramData,
		dataType: 'json',
        success: function(jsonObj){
            if(jsonObj.status === 'OK'){
				$_showMessage('OK', jsonObj.status, jsonObj.msg);
				$('#ordenFabricacionDialog').dialog('close');
				oTable.fnStandingRedraw();
			}
			else
				$_showMessage('ERR', jsonObj.status, jsonObj.msg);
            $("#btnGuardar").removeAttr('disabled');
        }
    });

return true;
}

function delProxyShow()
{
	if(actionPK === undefined)
	{
		$_showMessage('ALERT', 'ALERTA', 'Seleccione una Orden de Fabricaci&oacute;n de la Grilla');
		return;
	}
	
	if(estado != iConstEstadoOF.INGRESADA) 
	{
		$_showMessage('ALERT', 'ALERTA', 'La Orden de Fabricaci&oacute;n esta ' + estado + ', no se Puede Eliminar');
		return;
	}
	
	action = iConst.DELETE;
	
	$("#deleteOrdenFabricacionDialog").dialog({
		autoOpen: false, 
		width:350,
		position: 'center',
		open: function () {
			$('#deleteOrdenFabricacionDialog').css('background-color','#4f4233');
			$('#btnConfirmaEliminar').click( function(e) {
				$_del();
			});
			$('#btnSalirEliminar').click( function(e) {
				$('#deleteOrdenFabricacionDialog').dialog('close');
			})
		}
	});
	$('#deleteOrdenFabricacionDialog').dialog('open');	
}

function $_del()
{
	var paramData = 'accion=' + action + '&idOrdenFabricacion=' + actionPK;

    $.ajax({
            type: 'POST',
            url: actionForm,
            data: paramData,
			dataType: 'json',
            success: function(jsonObj)
                                {
                                    if(jsonObj.status === 'OK'){
										$_showMessage('OK', 'OK', jsonObj.msg);
										
										//Reset State of action and IndexPK
										actionPK = undefined;
										action = iConst.NEW;
										estado = undefined;
										oTable.fnStandingRedraw();
									}
									else
										$_showMessage('ERR', 'ERROR', jsonObj.msg);
                                    $('#deleteOrdenFabricacionDialog').dialog('close');
                                }
            });

return true;
}

function procesarProxyShow()
{
	if(actionPK === undefined)
	{
		$_showMessage('ALERT', 'ALERTA', 'Seleccione una Orden de Fabricaci&oacute;n de la Grilla');
		return;
	}
	
	if(estado != iConstEstadoOF.INGRESADA) 
	{
		$_showMessage('ALERT', 'ALERTA', 'Opci&oacute;n Invalida, La Orden de Fabricaci&oacute;n esta ' + estado);
		return;
	}
	
	action = iConst.PROCESAR;
	
	$("#procesarOrdenFabricacionDialog").dialog({
		autoOpen: false, 
		width:410,
		position: 'center',
		open: function () {
			$('#procesarOrdenFabricacionDialog').css('background-color','#4f4233');
			$('#btnConfirmaProcesar').click( function(e) {
				$_procesar();
			});
			$('#btnSalirProcesar').click( function(e) {
				$('#procesarOrdenFabricacionDialog').dialog('close');
			})
		}
	});
	$('#procesarOrdenFabricacionDialog').dialog('open');	
}

function $_procesar()
{
	var paramData = 'accion=' + action + '&idOrdenFabricacion=' + actionPK;

    $.ajax({
            type: 'POST',
            url: actionForm,
            data: paramData,
			dataType: 'json',
            success: function(jsonObj)
                                {
                                    if(jsonObj.status === 'OK'){
										$_showMessage('OK', 'OK', jsonObj.msg);										
										oTable.fnStandingRedraw();
									}
									else
										$_showMessage('ERR', 'ERROR', jsonObj.msg);
                                    $('#procesarOrdenFabricacionDialog').dialog('close');
                                }
            });

return true;
}

function finalizarProxyShow()
{
	if(actionPK === undefined)
	{
		$_showMessage('ALERT', 'ALERTA', 'Seleccione una Orden de Fabricaci&oacute;n de la Grilla');
		return;
	}
	
	if(estado != iConstEstadoOF.ENPROCESO) 
	{
		$_showMessage('ALERT', 'ALERTA', 'Opci&oacute;n Invalida, La Orden de Fabricaci&oacute;n esta ' + estado);
		return;
	}
	
	action = iConst.FINALIZAR;	
	$('#finalizarOrdenFabricacionDialog').load(popFinalizarForm).dialog('open');
	
}

function $_initPopValidator()
{	
	$('#ordenFabricacionPopForm').validate({
		submitHandler: function() {
			$_saveOrdenFabricacion(action);
		}, 		
		rules: {
			fecha: {required: true, minlength: 1}
		},
		messages: {
			fecha: {required: '', minlength: ''}
		}
	});
}

function $_initPopFinalizar()
{
	$(document).ready(function() {
		$('#btnSalirFinalizar').click( function(e) {
			$('#finalizarOrdenFabricacionDialog').dialog('close');
		});
		
		$('#btnGuardarFinalizar').click( function(e) {

			joDataPiezasItems = [];
			$.each(oTablePiezasOrdenFabricacion.fnGetNodes(), function(index, value) {
				var idCodPieza = $(".gridInputMtsPieza", value).attr('id');
				var mtsPieza = $(".gridInputMtsPieza", value).val();
				
				var joPiezasItem = {
						pieza : idCodPieza,
						canMtsPieza : mtsPieza
				};
				joDataPiezasItems.push(joPiezasItem);
			});

			var paramData =  "accion=" + iConst.FINALIZAR + "&idOrdenFabricacion=" + actionPK + "&joDataPiezasItems=" +  encodeURIComponent(JSON.stringify(joDataPiezasItems));
			
			$.ajax({
		        type: 'POST',
		        url: actionForm,
		        data: paramData,
				dataType: 'json',
		        success: function(jsonObj)
		                            {
		                                if(jsonObj.status === 'OK') {
		                                	$_showMessage('OK', jsonObj.status, jsonObj.msg);
		                                	oTable.fnStandingRedraw();
		                                }
		                    			else
		                    				$_showMessage('ERR', jsonObj.status, jsonObj.msg);
		                                $('#finalizarOrdenFabricacionDialog').dialog('close');
		                            }
		        });
		});
		
		oTablePiezasOrdenFabricacion = $('#dt_piezasOrdenFabricacion').dataTable( {			
										"bJQueryUI": true,
										"sPaginationType": "two_button",
										"bInfo": false,
										"bLengthChange": false,
										"bProcessing": true,
										"bFilter": false,
										"bScrollInfinite": true,
										"bScrollCollapse": true,
										"bPaginate": false,
										"iDisplayLength": -1,
										"bServerSide": true,
										"sAjaxSource": actionForm + "?accion=searchPiezasOrdenFabricacion&idOrdenFabricacion=" + actionPK,
										"aoColumns": [
										            { "bSortable": false },
										  			{ "bSortable": false },
										  			{ "bSortable": false },
										  			{ "bSortable": false },
										  			{ "bSortable": false }
										  		]
									});
    	    	 
    	$('#dt_piezasOrdenFabricacion tbody td.gridInput input').live('focus', function (e){
    		$(this).numeric();
    	});
	});
}

function $_ClearOrdenFabricacionPopForm()
{	
	$("#ordenFabricacionDialog").empty();
	oTableItem = undefined;
}

function $_ClearOrdenFabricacionFinalizarPopForm()
{
	$("#finalizarOrdenFabricacionDialog").empty();
}

function $_addRemoveItem(id, variedad)
{
	var exist = false;
	
	if(!$.isEmptyObject(jaItems)) {
		$.each(jaItems, function(i, value) {
			if(value.id == id && value.variedad == variedad) {
				jaItems.splice(i, 1);
				exist = true;
				return false;
			}
		});
	}
	if(!exist)
		jaItems.push({'id': id, 'variedad': variedad});
}

function $_addRemoveSubitem(id, variedad, idCliente)
{
	var exist = false;
	
	if(!$.isEmptyObject(jaSubitems)) {
		$.each(jaSubitems, function(i, value) {
			if(value.id == id && value.variedad == variedad && value.idCliente == idCliente) {
				jaSubitems.splice(i, 1);
				exist = true;
				return false;
			}
		});
	}
	if(!exist)
		jaSubitems.push({'id': id, 'variedad': variedad, 'idCliente': idCliente});
}